package br.com.cnpv.managebean.funcionalidade;

import java.util.ArrayList;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;

import br.com.cnpv.modelo.bo.FuncionalidadeBO;
import br.com.cnpv.modelo.bo.PerfilBO;
import br.com.cnpv.modelo.entity.Funcionalidade;
import br.com.cnpv.modelo.entity.Perfil;
import br.com.cnpv.modelo.entity.Usuario;

@ManagedBean(name="funcionalidadeMB")
@SessionScoped
public class FuncionalidadeMB extends FuncionalidadeBean
{

	public String paginaBusca()
	{
		try
		{
		
			//BO
			FuncionalidadeBO funcionalidadeBO = FuncionalidadeBO.getInstance();
			
			funcionalidade = new Funcionalidade();
			
			funcionalidadeList = funcionalidadeBO.listar();
		
		}catch(Exception e)
		{
			FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_FATAL, "", "Ocorreu um erro. Tente mais tarde");
			FacesContext.getCurrentInstance().addMessage(null, message);
			e.printStackTrace();
		}
		
		return "pretty:funcionalidade";
	}
	public void buscar()
	{
		try
		{
			// BO
			FuncionalidadeBO bo = FuncionalidadeBO.getInstance();

			funcionalidadeList = bo.buscar(funcionalidade);
		}catch(Exception e)
		{
			FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_FATAL, "", "Ocorreu um erro. Tente mais tarde");
			FacesContext.getCurrentInstance().addMessage(null, message);
			e.printStackTrace();
		}
	}
	
	public String paginaNovo()
	{
		funcionalidade = new Funcionalidade();
		return "pretty:novaFuncionalidade";
	}
	
	public void saveOrUpdate()
	{
		FacesMessage message = null;
		try
		{
			HttpServletRequest request = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
			Usuario usuario = (Usuario)request.getSession().getAttribute("usuario");
			//BO
			FuncionalidadeBO bo = FuncionalidadeBO.getInstance();
			
			funcionalidade.setIdUsuario(usuario.getId());
			bo.saveOrUpdate(funcionalidade);
			if(funcionalidade.getId() == 0)
			{
				message = new FacesMessage(FacesMessage.SEVERITY_INFO, "", "Funcionalidade Cadastrada com Sucesso!");
				funcionalidade = new Funcionalidade();
			}else
			{
				message = new FacesMessage(FacesMessage.SEVERITY_INFO, "", "Funcionalidade Alterada com Sucesso!");
			}
		}catch(Exception e)
		{
			message = new FacesMessage(FacesMessage.SEVERITY_FATAL, "", "Ocorreu um erro. Tente mais tarde");
			e.printStackTrace();
		}
		
		FacesContext.getCurrentInstance().addMessage(null, message);
	}
	
	public String paginaAlterar()
	{
		try
		{
			funcionalidade = funcSelecionada;
		}catch(Exception e)
		{
			e.printStackTrace();
		}
		
		return "pretty:alterarFuncionalidade";
	}
}